package cn.nio.网络io;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;

/**
 * 网络客户端程序
 *
 * @author Mxb
 * @version 1.0
 * @date 2020/7/31 11:16
 */
public class NIOClient {
    public static void main(String[] args) throws IOException {
        // 1, 得到通道
        SocketChannel channel = SocketChannel.open();
        // 2, 设置阻塞方式
        channel.configureBlocking(false);

        // 3, 提供服务器端的ip 地址和端口
        InetSocketAddress address = new InetSocketAddress("127.0.0.1", 8888);

        // 4, 连接服务器
        if (!channel.connect(address)) {
            // 一直连接
            while (!channel.finishConnect()) {
                //    nio作为非阻塞式的优势
                System.out.println("客户端：在执行其他任务。。。");
            }
        }
        // 5，得到一个缓冲区并存入 数据
        String msg = "hello Server";
        ByteBuffer wrap = ByteBuffer.wrap(msg.getBytes());

        // 6, 发送数据
        channel.write(wrap);

        System.in.read();
    }
}
